/*
 * Copyright (c) 2023 fred
 * Licensed under the Apache License,Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */
import { OutputSettings } from './OutputSettings';
import { TextNode } from './TextNode';

/**
 * A Character Data node, to support CDATA sections.
 */
export class CDataNode extends TextNode {
  constructor(text:string) {
    super(text)
  }

  public nodeName():string {
    return "#cdata"
  }
  /**
   * Get the unencoded, <b>non-normalized</b> text content of this CDataNode.
   * @return unencoded, non-normalized text
   */
  public text():string {
    // return this.getWholeText()
    return ""
  }

  outerHtmlHead(accum: string[], depth: number, out: OutputSettings) {
    accum.push("<![CDATA[")
    // accum.push(this.getWholeText())
  }

  outerHtmlTail(accum: string[], depth: number, out: OutputSettings) {
    accum.push("]]>")
  }

  public clone():CDataNode {
    return super.clone() as CDataNode
  }

}

